/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ht2;

/**
 * Interfaz que especifica los metodos para implementar una pila.
 * @author Josué Barrientos - 09049
 * @param E El tipo de dato que se va a trabajar
 */
public interface Stack<E> 
{
   /**
    * Se añade el objeto a la pila.
    * @param item objeto que se añadira a la pila.
    * @pre -
    * @post El item se añade a la pila.
    */
   public void push(E item);
   
   /**
    * Remueve y devuelve el objeto mas recientemente añadido a la pila.
    * @return objeto mas recientemente añadido a la pila
    * @pre La pila no debe estar vacia
    * @post -
    */
   public E pop();
   
   /**
    * Devuelve,  sin remover,el objeto mas recientemente añadido a la pila.
    * @return objeto mas recientemente añadido a la pila
    * @pre La pila no debe estar vacia
    * @post -
    */
   public E peek();
   
   /**
    * Indica si la pila está vacia.
    * @return true si y solo si la pila está vacia.
    * @pre -
    * @post -
    */
   public boolean empty();

   /**
    * Devuelve el tamaño de la pila.
    * @return int tamaño de la pila.
    * @pre -
    * @post -
    */
   public int size();

}
